package hg.framework.common.utils;

import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import hg.framework.common.excetion.BizException;

import java.util.List;

/**
 * 断言工具
 * @author guoqifei
 * @date 2021-01-06
 */
public class AssertUtils {

    /**
     * 验证obj是否为空，为空抛出异常
     * @param obj 对象
     * @param errMsg 错误信息，obj为空时，异常说明
     * @throws BizException obj为空时，抛出异常
     */
    public static void checkNull(Object obj, String errMsg) throws BizException {
        if (null == obj) {
            throw BizException.exception(errMsg);
        } else if (StrUtil.isEmpty(obj.toString().trim())) {
            throw BizException.exception(errMsg);
        } else {
            // 非空，通过
        }
    }

    /**
     * 验证obj是否为空，为空抛出异常
     * @param objList 对象
     * @param errMsg 错误信息，obj为空时，异常说明
     * @throws BizException obj为空时，抛出异常
     */
    public static void checkNull(List objList, String errMsg) throws BizException {
        if (null == objList) {
            throw BizException.exception(errMsg);
        } else if (CollectionUtil.isEmpty(objList)) {
            throw BizException.exception(errMsg);
        } else {
            // 非空，通过
        }
    }

    /**
     * 验证是否相等
     * @param objA 对象A
     * @param objB 对象B
     * @param errMsg 错误信息，二者不相等时，异常说明
     * @throws BizException 入参为空或二者不相等时，抛出异常
     */
    public static void eq(Object objA, Object objB, String errMsg) throws BizException {
        checkNull(objA, "验证相等，入参不能为空");
        checkNull(objB, "验证相等，入参不能为空");
        if (!objA.equals(objB)) {
            throw BizException.exception(errMsg);
        } else {
            // 二者相等，通过
        }
    }
}
